package miravalles.chip;

import java.math.BigDecimal;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import android.text.format.DateUtils;


public class Apunte {
	private String 		concepto;
	private Date		fecha;
	private String		operacion;
	private BigDecimal  boteActual;
	private BigDecimal	variacion;
	private String		lugar;
	private Double		latitud;
	public Double getLatitud() {
		return latitud;
	}

	public void setLatitud(Double latitud) {
		this.latitud = latitud;
	}

	public Double getLongitud() {
		return longitud;
	}

	public void setLongitud(Double longitud) {
		this.longitud = longitud;
	}

	private Double		longitud;
	
	public String getLugar() {
		return lugar;
	}

	public void setLugar(String lugar) {
		this.lugar = lugar.replaceAll(","," ");
	}

	public static Apunte crear(String concepto, String op, 
									BigDecimal boteActual, 
									BigDecimal variacion, 
									String lugar, Double latitud, Double longitud) {
		Apunte apunte=new Apunte();
		apunte.setConcepto(concepto);
		apunte.setFecha(new Date());
		apunte.setOperacion(op);
		apunte.setVariacion(variacion);
		apunte.setBoteActual(boteActual);
		apunte.setLugar(lugar);
		apunte.setLatitud(latitud);
		apunte.setLongitud(longitud);
		return apunte;
	}
	
	private static final DateFormat dateFormat=new SimpleDateFormat("dd-MM-yy HH:mm");
	
	public static Apunte fromString(String anotacion) {
		String columnas[]=anotacion.split(",");
		if(columnas.length < 5) {
			return null;
		}
		Apunte apunte=new Apunte();
		apunte.setConcepto(columnas[0]);
		try {
			apunte.setFecha(dateFormat.parse(columnas[1]));
		} catch(ParseException e) {
			throw new IllegalStateException(e);
		}
		apunte.setOperacion(columnas[2]);
		apunte.setBoteActual(Util.getNumero(columnas[3]));
		apunte.setVariacion(Util.getNumero(columnas[4]));
		if(columnas.length > 5) {
			apunte.setLugar(columnas[5]);
		} else {
			apunte.setLugar("");
		}
		apunte.setLatitud(null);
		apunte.setLongitud(null);
		if(columnas.length > 7) {
			if(!"null".equals(columnas[6])) {
				apunte.setLatitud(Double.valueOf(columnas[6]));
			}
			if(!"null".equals(columnas[7])) {
				apunte.setLongitud(Double.valueOf(columnas[7]));
			}
		}		
		return apunte;	
	}
	
	public String getFechaAbsoluta() {
		return dateFormat.format(getFecha());
	}
	
	public String getFechaEditada() {
		return DateUtils.getRelativeTimeSpanString(getFecha().getTime()).toString();		
	}
	
	public String toString() {
		return
			concepto + "," + 
			dateFormat.format(fecha) + "," +
			operacion + "," +
			boteActual + "," +
			variacion + "," +
			lugar + "," +
			latitud + "," +
			longitud;
	}

	public String getConcepto() {
		return concepto;
	}

	public void setConcepto(String concepto) {
		this.concepto = concepto;
	}

	public Date getFecha() {
		return fecha;
	}

	public void setFecha(Date fecha) {
		this.fecha = fecha;
	}

	public String getOperacion() {
		return operacion;
	}

	public void setOperacion(String operacion) {
		this.operacion = operacion;
	}

	public BigDecimal getBoteActual() {
		return boteActual;
	}

	public void setBoteActual(BigDecimal boteActual) {
		this.boteActual = boteActual;
	}

	public BigDecimal getVariacion() {
		return variacion;
	}

	public void setVariacion(BigDecimal variacion) {
		this.variacion = variacion;
	}
}
